winpcap/npcap 提高抓包效率 发UDP包失败

您所在的位置:网站首页 npcap winpcap winpcap/npcap 提高抓包效率 发UDP包失败

winpcap/npcap 提高抓包效率 发UDP包失败

2024-07-12 16:11| 来源: 网络整理| 查看: 265

最近使用winpcap在win7下编写网络抓包程序,记录一下。

winpcap是比较老的网络抓包库,在win7和win10上依赖都不是很好,看网上有针对的win10版本的winpcap安装包,这里分享了win10下的winpcap安装包和编译好的库以及winpcap的源程序,连接如下win10pcap安装包 关于win10下重新编译wpcap可参考另外一篇,主要记录了遇到的问题win7编译wpcap

言归正传,本文目的是为了记录下如何提高winpcap的抓包效率,先描述下问题。 问题描述:在PC端使用winpcap编写抓UDP包程序,千兆网卡,另一端是FPGA编写的数据发送端,带宽可达到800M/s,安装官方给的用例实现,存在以下问题。

数据发送失败 丢包非常严重

1、数据发送失败 使用winpcap编写的发送UDP数据的功能,在本地使用wireshark可以抓到包,但在另一端无法收到,wireshark也抓不到,分析的原因是数据包没有送出网卡,无论调用pcap_sendpacket函数还是pcap_sendqueue_transmit都发送不成功,最终将winpcap替换为Npcap,发送数据成功。有次看来还是winpcap的驱动在win7或者win10上依然存在bug。关于Npcap的详细信息可以查看官网Npcap,其实就是优化后的winpcap。 关于组UDP包的代码

//以太网数据头结构如下 #define ETHER_ADDR_LEN 6 typedef struct ether_header{ u_char ether_dhost[ETHER_ADDR_LEN]; u_char ether_shost[ETHER_ADDR_LEN]; u_short ether_type; //如果上一层为IP协议。则ether_type的值就是0x0800 }ether_header; /* 4字节的IP地址 */ typedef struct ip_address{ u_char byte1; u_char byte2; u_char byte3; u_char byte4; }ip_address; /* IPv4 首部 */ typedef struct ip_header{ unsigned char ihl : 4; //ip header length unsign


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3